package control;

import java.io.IOException;
import java.util.List;

import javax.naming.Context;
import javax.naming.NamingException;
import javax.rmi.PortableRemoteObject;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import swimv2.ejb.remote.GestioneNotificheRemote;
import swimv2.ejb.util.LoginToken;
import swimv2.ejb.entity.Notifica;
import util.HtmlUtil;

/**
 * Servlet implementation class Messaggi
 */
public class Messaggi extends Servlet {
	private static final long serialVersionUID = 1L;
    HttpServletRequest request;
    HttpServletResponse response;
    /**
     * @see Servlet#Servlet()
     */
    public Messaggi() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	    this.request = request;
		this.response = response;
		
	    String azione=(String) request.getParameter("azione");
		if(azione == null)
		{
			showMessaggi();
		}
		else if (azione.equals("creaMessaggio"))
		{
			showCreaMessaggio();
		} else if(azione.equals("dettaglioMessaggio"))
		{
			showDettaglioMessaggio();
			
		}
		//showCreaMessaggio();
		
	}

	private void showDettaglioMessaggio() {
		// TODO Auto-generated method stub
		
	}

	private void showCreaMessaggio() throws ServletException, IOException {

		
		HtmlUtil.CompletaEdIncludi(request,response,"/WEB-INF/pages/creaMessaggio.jsp");

	}

	private void showMessaggi() {
		Context jndiContext;
		try {
			jndiContext = new javax.naming.InitialContext();
			Object ref1 = jndiContext.lookup("GestioneNotifiche/remote");
			GestioneNotificheRemote gestioneNotificheRemote = (GestioneNotificheRemote) PortableRemoteObject
					.narrow(ref1, GestioneNotificheRemote.class);
			LoginToken tok = (LoginToken) request.getSession().getAttribute("LoginToken");
			String username=tok.getUsername();
			List<Notifica> elencoNotifiche = gestioneNotificheRemote.getNotifiche(username);
			request.setAttribute("elencoNotifiche", elencoNotifiche);
			HtmlUtil.CompletaEdIncludi(request,response,"/WEB-INF/pages/elencoMessaggi.jsp");

			
		} catch (NamingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ServletException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}


		
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		this.request = request;
		this.response = response;
		String azione=(String) request.getParameter("azione");
		if(azione.equals("inviaMessaggio"))
		{
			inviaMessaggio();
		}
		// TODO Auto-generated method stub
	}

	private void inviaMessaggio() {
		String destinatario = (String) request.getParameter("destinatario");
		String messaggio = (String) request.getParameter("messaggio");
		Context jndiContext;
		try {
			jndiContext = new javax.naming.InitialContext();
			Object ref1 = jndiContext.lookup("GestioneNotifiche/remote");
			GestioneNotificheRemote gestioneNotificheRemote = (GestioneNotificheRemote) PortableRemoteObject
					.narrow(ref1, GestioneNotificheRemote.class);
			LoginToken tok = (LoginToken) request.getSession().getAttribute("LoginToken");
			String username=tok.getUsername();
			
			gestioneNotificheRemote.inviaMessaggio(username, destinatario, messaggio);
			HtmlUtil.redirect(request, response, "/Messaggi");
			
			
		} catch (NamingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ServletException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		
		
		
	}

}
